当前位置:  开发笔记 > 数据库 > 正文

行尾的'^ M'字符

如何解决《行尾的'^M'字符》经验,为你挑选了9个好方法。

当我在Unix环境中运行特定的SQL脚本时,我在SQL脚本的每一行的末尾看到一个'^ M'字符,因为它回显到命令行.我不知道最初创建SQL脚本的操作系统.

造成这种情况的原因是什么?如何解决?



1> Thomas Owens..:

它是由DOS/Windows行结束字符引起的.就像安迪·惠特菲尔德所说,Unix命令dos2unix将有助于解决问题.如果需要更多信息,可以阅读该命令的手册页.


当你安装了自制软件时,你可以使用`brew install dos2unix`轻松获得OSX上的工具
在某些系统(即Ubuntu)上,此命令的名称为"fromdos"

2> Tim Abell..:

vi通过运行以下命令修复行结尾:

:set fileformat=unix

:w


这是一个很好的答案.非常感谢.(保存安装dos2unix,我可能只使用一次的工具)

3> ColinYounger..:

原因是基于Windows的操作系统和基于Unix的操作系统如何存储行尾标记之间的区别.

基于Windows的操作系统,由于它们的DOS传统,将行尾作为一对字符存储 - 0x0D0A(回车+换行).基于Unix的操作系统只是使用0x0A(换行).在^M你看到的是一个可视化表示0x0D(一个回车).

dos2unix将有助于此.您可能还需要将脚本源调整为"Unix友好".



4> Bernie Perez..:

最简单的方法是使用vi.我知道这听起来很糟糕但很简单并且已经安装在大多数UNIX环境中.^ M是来自Windows/DOS环境的新行.

从命令提示符: $ vi filename

然后按" :"进入命令模式.

全部搜索和替换全部是:%s/^M//g" 按住控制然后按V然后按M ",这将取代^ M没有任何内容.

然后写入并退出输入" :wq"完成!


感谢您对如何输入^ M字符的扩展!我会用\ r \n替换它.所以我做了:%s/^ M /\r/g

5> Andy Whitfie..:

尝试使用dos2unix剥离^ M.



6> dogbane..:

在vi中,做一个 :%s/^M//g

^M按住CTRL键,请按(V然后M按住控制键两者)并^M显示.这将找到所有出现并替换它们.


用unix友好换行符替换^ M:`:%s/^ M /\r/g`

7> Bill the Liz..:

SQL脚本最初是在Windows操作系统上创建的.'^ M'字符是Windows和Unix的结果,它们对于用于行尾字符的内容有不同的想法.您可以在命令行中使用perl来解决此问题.

perl -pie 's/\r//g' filename.txt


我只是提供了另一种选择,因为有四个人已经说过要使用dos2unix.
是的,我发现这很有用,因为我在一个在史前IT部门办公室工作的后台工作站.除了我使用了变体:perl -pi -e"s /\x0D/\n/g"file.csv

8> jW...:

^ M通常由Windows运算符换行引起,并且转换为Unix看起来像^ M.命令dos2unix应该很好地删除它们

dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...]



9> 小智..:
C:\tmp\text>dos2unix hello.txt helloUNIX.txt

如果没有安装dos2unix,Sed甚至可以更广泛地使用,也可以做这种事情

C:\tmp\text>sed s/\r// hello.txt > helloUNIX.txt  

你也可以尝试tr:

cat hello.txt | tr -d \r > helloUNIX2.txt  

结果如下:

C:\tmp\text>dumphex hello.txt  
00000000h: 48 61 68 61 0D 0A 68 61 68 61 0D 0A 68 61 68 61 Haha..haha..haha  
00000010h: 0D 0A 0D 0A 68 61 68 61 0D 0A                   ....haha..  

C:\tmp\text>dumphex helloUNIX.txt  
00000000h: 48 61 68 61 0A 68 61 68 61 0A 68 61 68 61 0A 0A Haha.haha.haha..  
00000010h: 68 61 68 61 0A                                  haha.  

C:\tmp\text>dumphex helloUNIX2.txt  
00000000h: 48 61 68 61 0A 68 61 68 61 0A 68 61 68 61 0A 0A Haha.haha.haha..  
00000010h: 68 61 68 61 0A                                  haha.  

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有